home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / PLUS4 / plus4disk2.d64 / ch8.06 elect < prev    next >
Text File  |  2009-01-03  |  9KB  |  105 lines

  1. Ç*NB"1:CH8.06  ELECT"
  2. Ç*SP0:LM8:RM62:PL66:PG59
  3. Ç*VP3:HL8:HR72:HD0:├16/+4: ┼╠┼├╘╔╧╬                    ,,╙ECTION XX
  4. Ç*HS2:------------------------------------,,----------
  5. Ç*FT0:-----------------------,,----------
  6. Ç*FS3:(C) 1984 ┼LIZABETH ─EAL,,         Ç#
  7. ╙ECTION
  8. Ç*LN2:CN1;┼╠┼├╘╔╧╬Ç*LN2:CN0
  9.      ┼LECTION IS A SERIOUS AND FAIRLY POPULAR ┴MERICAN GAME, SO WHEN IT IS TIME TO VOTE AT SCHOOL OR IN YOUR CLUB, THIS PROGRAM MIGHT BE HELPFUL. ╔T PERMITS CONDUCTING AN ELECTION USING THE COMPUTER AS A VOTING MACHINE.
  10.  
  11.      ╩UST AS IN REAL VOTING MACHINES, THE WINNER IS NOT ANNOUNCED. ╘HE VOTING MACHINE SIMPLY CALCULATES THE TOTAL NUMBER OF VOTES THE CANDIDATES RECEIVED. ┼LECTION SUPERVISORS CAN TO THE REST. ┴LSO, JUST AS IN A REAL SITUATION, THE COMPUTER IS NOT A VOTING POLICEMAN: PEOPLE WILL HAVE TO KEEP TRACK OF THEIR REGISTRATION LISTS.
  12.  
  13.      ╘HE PROGRAM IS FAIRLY FLEXIBLE. ╔T PERMITS VOTING FOR UP TO 20 DIFFERENT OFFICES. ┼ACH OFFICE MAY HAVE UP TO 9 CANDITATES RUNNING, AND YOU CAN SPECIFY HOW MANY TO VOTE FOR IN THE PARTICULAR RACE.
  14.  
  15.      ╘HE EXAMPLE DATA HAS LOTS OF CANDIDATES WITH ELEGANT NAMES, SUCH AS ╓1, ╨1, ┬6 AND SO ON. ╫HY? ╙O YOU CAN DEBUG THE PROGRAM IN A JIFFY AND THEN SUBSTITUTE REAL NAMES. ╘HE ╨ PEOPLE RUN FOR THE ╨RESIDENT, THE ╓ PEOPLE RUN FOR THE ╓ICE-╨RESIDENT, AND SO ON. ╔N SCHOOL, THERE OUGHT TO BE AN ELECTION FOR ┬LACKBOARD CLEANERS, IN OUR SITUATION YOU MAY VOTE FOR THREE.
  16.  
  17. // PRG: ELECTIONS //
  18. Ç*FP26
  19. ***  ╓┴╥╔┴┬╠┼╙  ***
  20.  
  21. ╬╨   COUNTS OFFICES FOR ELECTION
  22. ═    COUNTS PEOPLE RUNNING FOR EACH OFFICE
  23.      PLACES RESULT IN TABLE ═╪()
  24. ╥$() TABLE OF OFFICE NAMES
  25. ═╪() TABLE OF MAXIMUM NUMBER OF CANDIDATES
  26.      FOR THE OFFICE
  27. ╬$() TABLE OF CANDIDATES' NAMES
  28. ╘2() TABLE OF TOTAL VOTES EACH 
  29.      CANDIDATE RECEIVED (RESULTS)
  30. ┼╞   END FLAG: -1=ALL DONE, 0=NOT YET
  31. ╓    VOTE/RESULT TIME FLAG
  32.      0=PRINT RESULTS, -1=PRINT NAMES TO VOTE FOR
  33. ╬╓   COUNTS VOTERS
  34. ╧╦   FLAGS PROPER VOTES, -1 NORMALLY,
  35.      SET TO ZERO IF ILLEGAL VOTE
  36. ╓$   WORKING STRING FOR INITIAL DATA ENTRY
  37.      REUSED TO KEEP TRACK OF VOTES IN MULTI-
  38.      CANDIDATE SITUATION
  39. ╔$   KEYBOARD INPUT
  40. ┴╓   SAME THING IN ┴╙├╔╔ FORMAT
  41. ╨    PREVIOUS KEY PUSHED, VOTE
  42. ╤$   3-LETTER ATTENDANT'S CODE ENABLES VOTING
  43. ┌$   WHAT THE ATTENDANT ACTUALLY TYPES IN
  44. ╫$   EACH LETTER OF ┌$, CAN INCLUDE $
  45.  
  46. ***  ╔╬╙╘╥╒├╘╔╧╬╙  ***
  47.  
  48.      ╘HE FOLLOWING GRAPHIC CHARACTERS ARE USED: IN LINE 150 PRECEEDE "╓╧╘┼╥" WITH THE CLEAR-SCREEN CHARACTER. ╠INE 200 NEEDS A CLEAR-SCREEN CHARACTER IN QUOTES JUST BEFORE ╥$(╔). ╔N LINE 340 PLACE ONE CURSOR-DOWN JUST BEFORE "┼╬╘┼╥". ╔N LINE 360 TYPE ONE CURSOR-DOWN JUST AFTER <╥┼╘╒╥╬>.
  49.  
  50.      ╥╒╬ THE PROGRAM. ╫HEN ALL IS WELL, SUBSTITUTE REAL NAMES IN THE ─┴╘┴ LINES. ╓OTE BY ANSWERING THE QUESTIONS ON THE SCREEN. ╘HIS REQUIRES ONLY PRESSING THE NUMBER KEYS AND PRESSING THE ╥┼╘╒╥╬ KEY AFTER A CHOICE.
  51.  
  52.      ╘HE ╙╘╧╨ KEY IS DISABLED BY LINES 130 AND 700. ╒NTIL YOU'RE SURE THAT YOU HAVE TYPED THE PROGRAM CORRECTLY, PUT A ╥┼═ IN LINE 130, OTHERWISE IT WILL BE DIFFICULT TO STOP.
  53.  
  54.      ╘O BEGIN VOTING, THE VOTING SUPERVISOR MUST ENTER A 3-LETTER CODE. ┴ SCHOOL TEACHER ╔ KNOW INSISTS THAT THIS IS VITAL AS OTHERWISE SOME SILLY KIDS WILL TRY TO VOTE MORE THAN ONCE. ╘HE 3-LETTER CODE IS CURRENTLY ┼╟─ (LINE 610), BUT MUST BE CHANGED TO ANOTHER SEQUENCE TO KEEP IT UNKNOWN.
  55.  
  56.      ╘HE PROGRAM CLEARS THE SCREEN AFTER EACH VOTER HAS GONE DOWN THE LIST. ╘ABULATIONS CAN BEGIN BETWEEN THE VOTERS, WHEN THE ATTENDANT PRESSES A DOLLAR-KEY "$". ┘OU CAN CHANGE THAT, OF COURSE - IT'S IN LINE 640 (┴╙├╔╔ VALUE 36). ╘HE PROGRAM DOES NOT PERMIT YOU TO VOTE SILLY, NOR TO VOTE FOR A PERSON MORE THAN ONCE IN THE SITUATION WHERE YOU MAY VOTE FOR, SAY, THREE DIFFERENT CANDIDATES. ╨RESSING A STAR-KEY INSTEAD OF A CANDIDATE NUMBER INDICATES "NOT VOTING FOR THIS BUNCH".
  57.  
  58.      ┴ VOTER CAN CHANGE HIS OR HER MIND AS OFTEN AS THEY WISH, BUT THE HESITATION IS LIMITED ONLY TO THE TIME UNTIL THEY PRESS  <╥┼╘╒╥╬> KEY. ╙O YOU CAN TYPE: 1 2 4 2 3, CHANGING YOUR MIND BETWEEN THE NUMBERS. ┬UT ONCE YOU PRESS ╥┼╘╒╥╬, THERE IS NO CHANGING. ╘HE LAST VALUE GETS REGISTERED, THE SCREEN CLEARS IMMEDIATELY AND YOU CAN BEGIN VOTING FOR THE NEXT OFFICE. ╔N THIS LAST EXAMPLE CANDIDATE NUMBER 3 RECEIVES THE VOTE.
  59.  
  60.      ┴ TYPICAL SCREEN DISPLAY MAY LOOK LIKE THIS:
  61.  
  62. // PIC: ELECT //
  63.  
  64. ***  ─┼╘┴╔╠╙ AND ╙╒╟╟┼╙╘╔╧╬╙  ***
  65.  
  66.      ╘HE PROGRAM IS MADE OF SEVERAL SECTIONS WITH THESE FUNCTIONS:
  67.  
  68. 1. ═AIN PROGRAM IN LINES 130-220: INITIALIZES ALL THE VALUES, BUILDS TABLES OF CANDIDATES, OFFICES AND SO ON. ╔T DISPLAYS THE VOTING SCREEN, PROMPTS FOR VOTER INPUTS, GATHERS THE VOTES, AND REPEATS THE PROCESS UNTIL A "$" KEY IS PUSHED. ┴T THIS POINT THE RESULTS ARE DISPLAYED.
  69.  
  70. 2. ╙UBROUTINE IN LINES 230-310 PRINTS A VOTING SCREEN. ╔F WE VOTE, SIMPLY THE OFFICE DESIGNATION AND THE CANDIDATES' NAMES ARE SHOWN WITH THE PROMPT TO VOTE. ╔F THE VOTING IS ALL OVER, THE SAME FORMAT IS USED, EXCEPT THAT NOW THE TOTAL VOTES RECEIVED BY EACH CANDIDATE ARE PRINTED NEXT TO EVERYBODY'S NAME.
  71.  
  72. 3. ╙UBROUTINE IN LINES 320-350 IGNORES SPURIOUS KEY PRESSES AND PAUSES. ╔T WAITS FOR ANY KEY TO BE PRESSED TO CONTINUE.
  73.  
  74. 4. ╙UBROUTINE IN LINES 370-490 IS THE WORKHORSE OF THE WHOLE SYSTEM. ╔T LOOKS AT WHAT THE VOTERS ARE TYPING, CHECKS THAT THE VOTES MAKE SENSE (LEGAL NUMBERS, NO DUPLICATES) AND ADDS ONE POINT TO THE CANDIDATE'S TOTAL (╘2) WHEN THE VOTE IS LEGAL.
  75.  
  76. 5. ╙UBROUTINE IN LINES 500-530 IS USED ONLY IN A SITUATION WHEN THERE ARE MORE THAN ONE POSSIBLE OFFICES TO BE FILLED (AS IN THE BLACKBOARD CLEANERS EXAMPLE). ╔T WILL NOT PERMIT YOU TO GIVE MORE THAN ONE VOTE TO A PERSON. ╧╦ WILL BE SET TO FALSE IF YOU TRY TWO VOTES, THE COMPUTER WILL NOT PERMIT THE ENTRY. ╬OTE THAT THIS IS CHECKED AFTER ╥┼╘╒╥╬ KEY IS PRESSED (┴╙├╔╔ OF ╥┼╘╒╥╬ IS 13). ╔F THE VOTE IS LEGAL, WE ADD IT TO THE COUNT ╘2, OTHERWISE WE KEEP WAITING FOR MORE INPUT.
  77.  
  78. 6. ╙UBROUTINE IN LINES 540-600 INITIALISES ALL DATA BY LOOKING AT THE ─┴╘┴ LINES. ╞OR INSTANCE, TAKING THE FIRST TWO LINES: IT READS OFFICE NAME AND PLACES IT IN ╥$ TABLE. ╘HEN IT READS HOW MANY PEOPLE YOU CAN VOTE FOR, HERE 1, SO 1 IS PLACED IN ═╪(OFFICE1). ╘HEN IT READS THE NAMES OF THE CANDIDATES. ╘HE COUNT OF CANDIDATES GOES INTO A BIN CALLED ╘├. ╘HE NAMES OF THE CANDIDATES GO INTO TABLES CALLED ╬$(OFFICE,CANDIDATE), AND FINALLY, THE TOTAL VOTE COUNT FOR CANDIDATES IS SET TO ZERO IN TABLE ╘2(OFFICE,CANDIDATE). ╘HE STARS IN ─┴╘┴ LINES SIGNAL AN END OF A DATA GROUP.
  79.  
  80. ***  ╨╥╧╩┼├╘  ***
  81.  
  82.      ╘HERE ARE MANY GOOD REASONS FOR NOT LIKING A ONE-KEY STOP ($). ├ODE A SEQUENCE OF KEYS TO BE USED BY THE VOTING ATTENDANT TO STOP THE ELECTION.
  83.  
  84. ***  ╠┼┴╥╬╔╬╟ ┴┬╧╒╘ ┴╥╥┴┘╙  ***
  85.  
  86.      ╫E HAVE BEEN USING TINY ARRAYS ALL ALONG IN THE BOOK. ╙INCE THIS PROGRAM USES THEM MORE HEAVILY THAN ALL THE OTHERS, IT IS TIME TO TAKE STOCK OF ARRAY SITUATION. NEEDLESS TO SAY, IF YOU ARE COMFORTABLE WITH THE USE OF ARRAYS, YOU DO NOT NEED TO READ THIS SECTION. ╘HE MANUAL SHOWS KEYWORDS SUCH AS ─╔═ENSION, RELATED TO VALUES WHICH HAVE SOMETHING IN COMMON FROM THE PROGRAMMING POINT OF VIEW. ┬ASIC UNDERSTANDS EXPRESSIONS SUCH AS ╓(╩). ╚ERE ARE SOME EXPLANATIONS OF WHAT THIS IS ALL ABOUT, AS RELATED TO THE ┼LECTION PROGRAM.
  87.  
  88.      ╫E HAVE SEVERAL TABLES OF NAMES:
  89.  
  90.      1. ╧NE DIMENSIONAL ARRAY IS A SIMPLE LIST, SUCH AS WE HAVE OF THE NAMES OF OFFICES: PRESIDENT, VICE-PRESIDENT, TREASURER. ┼ACH LIST HERE HAS THREE ITEMS. ╘O GET AT THE SECOND ITEM, YOU'D CODE, IN YOUR PRIVATE LANGUAGE, ╧╞╞╔├┼(2), AND IN ┬ASIC, ╓(2) OR ╓$(2) FOR NUMBERS OR LETTERS, RESPECTIVELY. ┘OU CAN USE ANY LETTER, NOT JUST ╓. ╩UST DON'T USE MORE THAN TWO LETTERS, AS IT CAN GET CONFUSING.
  91.  
  92.      2. ╘WO DIMENSIONAL ARRAY IS JUST THAT. ╘HINK OF ROWS AND COLUMNS: THE ROWS COULD BE THE OFFICES, THE COLUMNS, THE CANDIDATES. ╙O LONG AS YOU CONSISTENTLY USE THE SAME DESIGNATION ALL WILL BE WELL. ╔N THIS PROGRAM, WE THINK OF THE OFFICES AS THE MAJOR CATEGORY, SAY, ROW. ╘HE CANDIDATES WITHIN EACH OFFICE ARE THE COLUMNS. ╘HAT'S WHAT THINGS LIKE ╬$(╬╨,═) MEAN. ╔F ╬╨ IS 2 AND ═ IS 3 WE ZERO IN ON THE CANDIDATE IN THE SECOND OFFICE (╓ICE ╨RESIDENT), CANDIDATE NUMBER 3, WHICH IS ═R. ╓3. "╔NDEXING" IS A BUZZWORD YOU MAY HEAR SOMETIMES, THIS IS IT. ╘HE INDEXES FOR ═R. ╓3 ARE 2 AND 3. (╬OT 3 AND 2, THAT WOULD POINT TO ═R. ╙2).
  93.  
  94.      ╘O RECAPITULATE, OUR ARRAYS WERE:
  95.  
  96. ╥$  OFFICE NAMES, ONE DIMENSIONAL ARRAY, OFFICES FROM 1 TO 20 AT MOST. ╧FFICES ARE COUNTED IN ╬╨, AS THEY ARE BEING READ.
  97.  
  98. ═╪  CORRESPONDS TO THE OFFICES: HOW MANY CANDIDATES CAN YOU VOTE FOR
  99.  
  100. ╬$  TWO DIMENSIONAL ARRAY: CANDIDATE NAMES WITHIN EACH OFFICE GROUP. ╙O ╓4'S ARRAY INDEXES ARE 2 AND 4, MEANING OFFICE 2, PERSON 4
  101.  
  102. ╘├  IS A ONE-DIMENSIONAL ARRAY WHICH SIMPLY HOLDS A COUNT OF THE RUNNING CANDIDATES. ┼ACH TIME WE READ IN A NAME WE BUMP THE COUNT ═, WHICH GOES INTO ╘├ AS SOON AS WE REACH A STAR.
  103.  
  104. ╘2 IS A TWO-DIMENSIONAL ARRAY. ╔T IS THE GOAL OF THE ELECTION PROGRAM - HERE IS WHERE THE TOTALS ARE KEPT AND LATER REPORTED.
  105.